class UmlXmiInfo:
    ns_xmi = "http://www.omg.org/spec/XMI/20131001"
    ns_uml = "http://www.omg.org/spec/UML/20131001"
    ns_mofext = "http://www.omg.org/spec/MOF/20131001"
    ns = {
        "xmi": ns_xmi,
        "uml": ns_uml,
        "mofext": ns_mofext,
    }
    type_association: str = "uml:Association"
    type_class: str = "uml:Class"
    type_comment: str = "uml:Comment"
    type_constraint: str = "uml:Constraint"
    type_data_type: str = "uml:DataType"
    type_enumeration: str = "uml:Enumeration"
    type_enumeration_literal: str = "uml:EnumerationLiteral"
    type_extension: str = "uml:Extension"
    type_extension_end: str = "uml:ExtensionEnd"
    type_generalization: str = "uml:Generalization"
    type_opaque_expression: str = "uml:OpaqueExpression"
    type_operation: str = "uml:Operation"
    type_package: str = "uml:Package"
    type_package_import: str = "uml:PackageImport"
    type_parameter: str = "uml:Parameter"
    type_primitive_type: str = "uml:PrimitiveType"
    type_profile: str = "uml:Profile"
    type_property: str = "uml:Property"
    type_stereotype: str = "uml:Stereotype"

    attr_xmi_type: str = f"{{{ns_xmi}}}type"
    attr_xmi_id: str = f"{{{ns_xmi}}}id"
    attr_xmi_id_ref: str = f"{{{ns_xmi}}}idref"

    # Primitive Types
    type_boolean = "http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi#Boolean"
    type_integer = "http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi#Integer"
    type_real = "http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi#Real"
    type_string = "http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi#String"
    type_unlimited = (
        "http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi#UnlimitedNatural"
    )

    # values in UML
    value_instance_value: str = "uml:InstanceValue"
    value_literal_boolean: str = "uml:LiteralBoolean"
    value_literal_integer: str = "uml:LiteralInteger"
    value_literal_real: str = "uml:LiteralReal"
    value_literal_string: str = "uml:LiteralString"
    value_literal_unlimited_natural: str = "uml:LiteralUnlimitedNatural"
